package listbyorder.access001_100.test19;

import listbyorder.utils.ListNode;

import java.util.ArrayList;
import java.util.List;

/**
 * 空间换时间的解法
 * @author code_yc
 * @version 1.0
 * @date 2020/5/28 13:49
 */
public class Solution4 {

    // 首先将遍历到的节点元素放入数组中
    // 然后跳过倒数第n个数值
    // 生成新的链表
    public ListNode removeNthFromEnd(ListNode head, int n) {
        List<ListNode> l = new ArrayList<ListNode>();
        ListNode h = head;
        int len = 0;
        while (h != null) {
            l.add(h);
            h = h.next;
            len++;
        }
        if (len == 1) {
            return null;
        }
        int remove = len - n;
        if (remove == 0) {
            return head.next;
        }
        //直接得到，不需要再遍历了
        ListNode r = l.get(remove - 1);
        r.next = r.next.next;
        return head;
    }
}
